package com.wxb.quartz.alipay;

/**
 * describe: 支付宝相关字段集
 *
 * @author : 王校兵
 * @version : v1.0
 * @time : 2017-07-05
 */
public enum AlipayField {

    //****************以下为公共请求参数******************
    APP_ID("app_id", "客户端号"),

    METHOD("method", "接口名称"),

    FORMAT("format", "传输格式，仅支持JSON"),

    RETURN_URL("return_url", "同步返回地址，HTTP/HTTPS开头字符串"),

    CHARSET("charset", "请求使用的编码格式，如utf-8,gbk,gb2312等"),

    SIGN_TYPE("sign_type", "商户生成签名字符串所使用的签名算法类型，目前支持RSA2和RSA，推荐使用RSA2"),

    SIGN("sign", "商户请求参数的签名串"),

    TIMESTAMP("timestamp", "发送请求的时间，格式: yyyy-MM-dd HH:mm:ss"),

    VERSION("version", "调用的接口版本，固定为：1.0"),

    NOTIFY_URL("notify_url", "支付宝服务器主动通知商户服务器里指定的页面http/https路径。异步返回url"),

    BIZ_CONTENT("biz_content", "业务请求参数的集合，最大长度不限，除公共参数外所有请求参数都必须放在这个参数中传递"),

    //*******************公共响应参数**************************

    CODE("code", "网关返回码"),

    MSG("msg", "网关返回码描述"),

    SUB_CODE("sub_code", "业务返回码"),

    SUB_MSG("sub_msg", "业务返回码描述"),

    //*******************以下为私有配置参数**************************

    OUT_TRADE_NO("out_trade_no", "商户订单号，64个字符以内、可包含字母、数字、下划线；需保证在商户端不重复"),

    PRODUCT_CODE("product_code", "销售产品码，与支付宝签约的产品码名称。 注：目前仅支持FAST_INSTANT_TRADE_PAY"),

    TOTAL_AMOUNT("total_amount", "订单总金额，单位为元，精确到小数点后两位，取值范围[0.01,100000000]"),

    SUBJECT("subject", "订单标题"),

    BODY("body", "订单描述"),

    GOODS_DETAIL("goods_detail", "订单包含的商品列表信息，Json格式.详见商品明细说明"),

    /**
     * 商品明细说明
     */
    SHOW_URL("show_url", "商品的展示地址"),

    PASSBACK_PARAMS("passback_params", "公用回传参数，如果请求时传递了该参数，则返回给商户时会回传该参数。支付宝只会在异步通知时将该参数原样返回。本参数必须进行UrlEncode之后才可以发送给支付宝"),

    EXTEND_PARAMS("extend_params", "业务扩展参数，详见业务扩展参数说明"),

    /**
     * 业务扩展参数说明
     */
    SYS_SERVICE_PROVIDER_ID("sys_service_provider_id", "系统商编号，该参数作为系统商返佣数据提取的依据，请填写系统商签约协议的PID"),

    GOODS_TYPE("goods_type", "商品主类型：0—虚拟类商品，1—实物类商品（默认）注：虚拟类商品不支持使用花呗渠道"),

    /**
     * 该笔订单允许的最晚付款时间，逾期将关闭交易。
     * 取值范围：1m～15d。m-分钟，h-小时，d-天，1c-当天（1c-当天的情况下，无论交易何时创建，都在0点关闭）。
     * 该参数数值不接受小数点， 如 1.5h，可转换为 90m。
     * 该参数在请求到支付宝时开始计时。
     */
    TIMEOUT_EXPRESS("timeout_express", "该笔订单允许的最晚付款时间，逾期将关闭交易"),

    ENABLE_PAY_CHANNELS("enable_pay_channels", "可用渠道，用户只能在指定渠道范围内支付当有多个渠道时用“,”分隔.注：与disable_pay_channels互斥"),

    DISABLE_PAY_CHANNELS("disable_pay_channels", "禁用渠道，用户不可用指定渠道支付.当有多个渠道时用“,”分隔.注：与enable_pay_channels互斥"),

    AUTH_TOKEN("auth_token", "针对用户授权接口，获取用户相关数据时，用于标识用户授权关系"),

    /**
     * PC扫码支付的方式，支持前置模式和跳转模式。
     * 前置模式是将二维码前置到商户的订单确认页的模式。需要商户在自己的页面中以 iframe 方式请求支付宝页面。具体分为以下几种：
     * 0：订单码-简约前置模式，对应 iframe 宽度不能小于600px，高度不能小于300px；
     * 1：订单码-前置模式，对应iframe 宽度不能小于 300px，高度不能小于600px；
     * 3：订单码-迷你前置模式，对应 iframe 宽度不能小于 75px，高度不能小于75px；
     * 4：订单码-可定义宽度的嵌入式二维码，商户可根据需要设定二维码的大小。
     * <p>
     * 跳转模式下，用户的扫码界面是由支付宝生成的，不在商户的域名下。
     * 2：订单码-跳转模式
     */
    QR_PAY_MODE("qr_pay_mode", "PC扫码支付的方式，支持前置模式和跳转模式。"),

    QRCODE_WIDTH("qrcode_width", "商户自定义二维码宽度,注：qr_pay_mode=4时该参数生效"),

    AUTH_APP_ID("auth_app_id", "授权方的appid .注：由于本接口暂不开放第三方应用授权，因此auth_app_id=app_id"),

    SELLER_ID("seller_id", "卖家支付宝账户号"),

    TRADE_NO("trade_no", "支付宝交易凭证号"),

    /**
     * 交易状态说明:
     * WAIT_BUYER_PAY	交易创建，等待买家付款
     * TRADE_CLOSED	未付款交易超时关闭，或支付完成后全额退款
     * TRADE_SUCCESS	交易支付成功
     * TRADE_FINISHED	交易结束，不可退款
     */
    TRADE_STATUS("trade_status", "交易目前所处的状态"),

    BUYER_ID("buyer_id", "买家支付宝账户号"),

    GMT_CREATE("gmt_create", "交易创建时间"),

    GMT_PAYMENT("gmt_payment", "交易付款时间"),

    GMT_CLOSE("gmt_close", "交易关闭时间"),

    GMT_REFUND("gmt_refund", "退款时间"),


    //****************交易查询相关**********************

    SEND_PAY_DATE("send_pay_date", "本次交易打款给卖家的时间"),

    //****************退款相关**********************

    OUT_REQUEST_NO("out_request_no", "本笔退款对应的退款请求号"),

    REFUND_REASON("refund_reason", "发起退款时，传入的退款原因"),

    REFUND_AMOUNT("refund_amount", "本次退款请求，对应的退款金额"),


    //****************统一收单交易撤销**********************

    RETRY_FLAG("retry_flag", "是否需要重试"),

    /**
     * close：关闭交易，无退款
     * refund：产生了退款
     */
    ACTION("action", "本次撤销触发的交易动作"),

    //****************统一收单交易关闭撤销**********************

    OPERATOR_ID("operator_id", "卖家端自定义的的操作员 ID"),

    BUYER_LOGIN_ID("buyer_logon_id", "用户的登录id"),

    FUND_CHANGE("fund_change", "本次退款是否发生了资金变化"),

    REFUND_FEE("refund_fee", "退款总金额"),

    GMT_REFUND_PAY("gmt_refund_pay", "退款支付时间"),

    STORE_NAME("store_name", "交易在支付时候的门店名称"),

    BUYER_USER_ID("buyer_user_id", "买家在支付宝的用户id"),

    REFUND_DETAIL_ITEM_LIST("refund_detail_item_list", "退款使用的资金渠道"),

    FUND_CHANNEL("fund_channel", "交易使用的资金渠道"),

    AMOUNT("amount", "该支付工具类型所使用的金额"),

    REAL_AMOUNT("real_amount", "渠道实际付款金额"),

    /**
     *目前只在资金渠道(fund_channel)是银行卡渠道(BANKCARD)的情况下才返回该信息(DEBIT_CARD:借记卡,CREDIT_CARD:信用卡,MIXED_CARD:借贷合一卡)
     * */
    FUND_TYPE(" fund_type", "渠道所使用的资金类型");

    private String field;

    private String desc;

    private AlipayField(String field, String desc) {
        this.field = field;
        this.desc = desc;
    }

    public String field() {
        return field;
    }

    public String desc() {
        return desc;
    }

    @Override
    public String toString() {
        return field;
    }
}
